package com.sky.result;

import lombok.Data;

import java.io.Serializable;

/**
 * 后端统一返回结果
 *
 * @param <T>
 */
@Data
public class Result<T> implements Serializable {

    private Integer code; // 编码：1成功，0和其它数字为失败
    private String msg; // 错误信息
    private T data; // 数据
    private String status; // 状态：success 或 ERROR

    public static <T> Result<T> success() {
        Result<T> result = new Result<>();
        result.code = 1;
        result.status = "success"; // 设置状态为 success
        return result;
    }

    public static <T> Result<T> success(T object) {
        Result<T> result = new Result<>();
        result.data = object;
        result.code = 1;
        result.status = "success"; // 设置状态为 success
        return result;
    }

    public static <T> Result<T> error(String msg) {
        Result<T> result = new Result<>();
        result.msg = msg;
        result.code = 0;
        result.status = "ERROR"; // 设置状态为 ERROR
        return result;
    }

    // 新增方法，根据状态设置
    public static <T> Result<T> createResult(boolean isSuccess, T data, String msg) {
        Result<T> result = new Result<>();
        if (isSuccess) {
            result.code = 1;
            result.status = "success";
            result.data = data;
        } else {
            result.code = 0;
            result.status = "ERROR";
            result.msg = msg;
        }
        return result;
    }

    // 新增方法，根据状态设置
    public static <T> Result<T> status(boolean isSuccess) {
        Result<T> result = new Result<>();
        if (isSuccess) {
            result.code = 1;
            result.status = "success";
        } else {
            result.code = 0;
            result.status = "ERROR";
            result.msg = "操作失败";
        }
        return result;
    }
}
